package pres.liko.iot.bean;


/**
 * <p>Title:ResponseVOUtil</p>
 * <p>Description:生成ResponseVO对象的工具类</p>
 * <p>Company:蓝色光标天地互联科技（北京）有限公司</p>
 *
 * @author yang.zhang3
 * @date 2016年2月16日 下午5:25:52
 */
public class ResponseVOUtil {
    /*返回编码由四位数字组成，前两位代表错误类型大类，后两位代码错误类型小类*/
    //成功编码
    public static final String CODE_0000 = "0000";
    //通用错误编码
    public static final String CODE_9999 = "9999";
    /*参数错误编码*/
    public static final String CODE_1000 = "1000";
    //权限校验失败错误编码
    public static final String CODE_3000 = "3000";
    //token校验异常错误编码
    public static final String CODE_5000 = "5000";
    //第三方返回错误编码
    public static final String CODE_2000 = "2000";

    //禁止实例化
    private ResponseVOUtil() {
    }

    public static <T> ResponseVO<T> generateSuccessResponseVO(T datas) {
        ResponseVO<T> vo = new ResponseVO<T>(CODE_0000, true, null);
        vo.setDatas(datas);
        return vo;
    }

    public static <T> ResponseVO<T> generateSuccessResponsePageVO(long totalCount, int pageSize, int currentPage, T datas) {
        ResponsePageVO<T> vo = new ResponsePageVO<T>(totalCount, pageSize, currentPage, null);
        vo.setRepCode(CODE_0000);
        vo.setRepSuccess(true);
        vo.setDatas(datas);
        return vo;
    }

    /**
     * @param : @param errMsg-错误信息
     * @return : ResponseVO
     * @Method_name : generateParameterErrorResponseVO
     * @Description : 生成参数错误返回VO
     * @author : yang.zhang3
     * @date : 2016年2月16日
     */
    public static <T> ResponseVO<T> generateParameterErrorResponseVO(String errMsg) {
        ResponseVO<T> vo = new ResponseVO<T>(CODE_1000, false, errMsg);
        return vo;
    }

    /**
     * @param : @param errMsg
     * @param : @return
     * @return : ResponseVO
     * @Method_name : generateCommonErrorResponseVO
     * @Description : 通用的业务逻辑错误返回VO
     * @author : yang.zhang3
     * @date : 2016年2月18日
     */
    public static <T> ResponseVO<T> generateCommonErrorResponseVO(String errMsg) {
        return new ResponseVO<T>(CODE_9999, false, errMsg);
    }

    /**
     * @param : @param errMsg
     * @param : @return
     * @return : ResponseVO
     * @Method_name : generatePermissionErrorResponseVO
     * @Description : 权限校验失败返回VO
     * @author : yang.zhang3
     * @date : 2016年3月1日
     */
    public static <T> ResponseVO<T> generatePermissionErrorResponseVO(String errMsg) {
        return new ResponseVO<T>(CODE_3000, false, errMsg);
    }

    private static <T> void setErrorValue(ResponseVO<T> vo, String blueairCode, String errorMsg) {
        vo.setRepCode(blueairCode);
        vo.setRepSuccess(false);
        vo.setErrorMsg(errorMsg);
    }

    /***
     * 合作伙伴（第三方）返回错误
     * @param errMsg
     * @return
     */
    public static <T> ResponseVO<T> generatePartnerErrorResponseVO(String errMsg) {
        return new ResponseVO<T>(CODE_2000, false, errMsg);
    }

    /**
     * token校验错误
     *
     * @param errMsg
     * @return
     */
    public static <T> ResponseVO<T> generateTokenErrorResponseVO(String errMsg) {
        return new ResponseVO<T>(CODE_5000, false, errMsg);
    }


}
